update userInfo province_code

add userInfo province_code

add statistic_userprofile

FFIB 5 年之前
父节点
当前提交
5e414a54de
共有 4 个文件被更改,包括 59 次插入2 次删除
  1. 2 0
      account/models.py
  2. 47 2
      api/admin_views.py
  3. 3 0
      api/urls.py
  4. 7 0
      commands/management/commands/gis.py

+ 2 - 0
account/models.py

@@ -331,6 +331,7 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin):
331 331
     province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份')
332 332
     city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市')
333 333
     location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
334
+    province_code = models.CharField(_(u'province_code'), max_length=255, blank=True, null=True, help_text=u'用户省份编码')
334 335
 
335 336
     # 用户身份
336 337
     islensman = models.BooleanField(_(u'islensman'), default=False, help_text=_(u'摄影师?'), db_index=True)
@@ -473,6 +474,7 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin):
473 474
             'sex': self.sex,
474 475
             'province': self.province,
475 476
             'city': self.city,
477
+            'province_code': self.province_code,
476 478
             'subscribe': self.subscribe,
477 479
             'membercardid': self.membercardid,
478 480
             'memberusercardcode': self.memberusercardcode,

+ 47 - 2
api/admin_views.py

@@ -8,13 +8,18 @@ from django_logit import logit
8 8
 from django_response import response
9 9
 from paginator import pagination
10 10
 from TimeConvert import TimeConvert as tc
11
+from django.utils import timezone
11 12
 
12
-from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo
13
+from mch.models import AdministratorInfo
14
+from statistic.models import ConsumeModelSaleStatisticInfo
13 15
 from account.models import UserInfo
14 16
 from integral.models import SaleclerkSubmitLogInfo
15 17
 from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,
16 18
                                      ProductMachineStatusCode)
17 19
 
20
+from collections import defaultdict
21
+import json
22
+
18 23
 
19 24
 WECHAT = settings.WECHAT
20 25
 
@@ -200,4 +205,44 @@ def userinfo_update(request):
200 205
 
201 206
     user.save()
202 207
 
203
-    return response(200, 'Userinfo Update Success', u'修改用户信息成功', data={})
208
+    return response(200, 'Userinfo Update Success', u'修改用户信息成功', data={})
209
+
210
+
211
+# #统计
212
+def statistic_userprofile(request):
213
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
214
+    admin_id = request.POST.get('admin_id', '')
215
+    start_time = request.POST.get('start_time', '')
216
+    end_time = request.POST.get('end_time', '')
217
+    model_uni_name = request.POST.get('model_uni_name', '')
218
+
219
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
220
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
221
+
222
+    try:
223
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
224
+    except AdministratorInfo.DoesNotExist:
225
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
226
+
227
+    if model_uni_name:
228
+        logs = ConsumeModelSaleStatisticInfo.objects.filter(model_name=model_uni_name, ymd__gte=start_time, ymd__lte=end_time)
229
+    else:
230
+        logs = ConsumeModelSaleStatisticInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time)
231
+    
232
+    sexs = {0: 0, 1: 0, 2: 0}
233
+    provinces = defaultdict(int)
234
+    for log in logs:
235
+        for user in log.users:
236
+            try:
237
+                user = UserInfo.objects.get(user_id=user, status=True)
238
+            except UserInfo.DoesNotExist:
239
+                continue
240
+
241
+            provinces[user.province_code] += 1
242
+            sexs[user.sex] += 1
243
+
244
+    return response(200, 'Get User Profile Success', u'获取用户画像成功', data={
245
+        'provinces': provinces,
246
+        'sexs': sexs,
247
+    })
248
+    

+ 3 - 0
api/urls.py

@@ -293,6 +293,9 @@ urlpatterns += [
293 293
     url(r'^admin/query_usergoods$', admin_views.query_usergoods, name='query_usergoods'),
294 294
     url(r'^admin/query_userinfo$', admin_views.query_userinfo, name='query_userinfo'),
295 295
     url(r'^admin/userinfo_update$', admin_views.userinfo_update, name='userinfo_update'),
296
+
297
+    #statistic
298
+    url(r'^admin/statistic/user_profile$', admin_views.statistic_userprofile, name='statistic_userprofile'),
296 299
 ]
297 300
 
298 301
 urlpatterns += [

+ 7 - 0
commands/management/commands/gis.py

@@ -10,6 +10,7 @@ from django_models_ext import ProvinceModelMixin, ProvinceShortModelMixin
10 10
 from django_six import CompatibilityBaseCommand, close_old_connections
11 11
 
12 12
 from statistic.models import ConsumeProvinceSaleStatisticInfo
13
+from account.models import UserInfo
13 14
 from utils.redis.connect import r
14 15
 from utils.redis.rkeys import MINI_PROGRAM_GIS_LIST
15 16
 
@@ -68,6 +69,12 @@ class Command(CompatibilityBaseCommand):
68 69
                     user_id = v.get('user_id', '')
69 70
                     ymd = v.get('ymd', '')
70 71
 
72
+                    #更新用户表
73
+                    user = UserInfo.objects.get(user_id=user_id, status=True)
74
+                    user.province_code = province_code
75
+                    user.save()
76
+
77
+
71 78
                     # [消费者维度]省份销量统计
72 79
                     # 日
73 80
                     cpssi, _ = ConsumeProvinceSaleStatisticInfo.objects.select_for_update().get_or_create(